﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Negocio.clases_tontas;
using Datos;

namespace Negocio.catalogos
{
    public class catalogoCabeceraAsistencia
    {
        ControlAsistenciaEntities _objEntity = new ControlAsistenciaEntities();


        public List<cabeceraAsistencia> obtenerCabeceraAsistencia() 
        {
            List<cabeceraAsistencia> _lista = new List<cabeceraAsistencia>();
            try
            {
                foreach (var item in _objEntity.procConsultarCabeceraAsistencia())
                {
                    _lista.Add(new cabeceraAsistencia(item.idCabeceraAsistencia, new  catalogoEstudiante().obtenerEstudianteXID((int)item.idEstudiante).First(), new catalogoCabecera().obtenerCabeceraXID((int)item.idCabecera),Convert.ToInt32(item.idObservacion), item.observacion));
                }
                return _lista;
            }
            catch (Exception)
            {                
                return _lista;
            }
        }
        
        public List<cabeceraAsistencia> obtenerCabeceraAsistenciaXIDCabecera(int _idCabecera)
        {
            List<cabeceraAsistencia> _lista = new List<cabeceraAsistencia>();
            try
            {
                foreach (var item in _objEntity.procConsultarCabeceraAsistenciaXidCabecera(_idCabecera))
                {
                    _lista.Add(new cabeceraAsistencia(item.idCabeceraAsistencia, new catalogoEstudiante().obtenerEstudianteXID((int)item.idEstudiante).First(), new catalogoCabecera().obtenerCabeceraXID((int)item.idCabecera),Convert.ToInt32(item.idObservacion),item.observacion));
                }
                return _lista;
            }
            catch (Exception)
            {
                return _lista;
            }
        }

        public cabeceraAsistencia obtenerCabeceraAsistenciaXIDCabeceraANDIDEstudiante(int _idCabecera, int _idEstudiante)
        {
            cabeceraAsistencia _lista = null;
            try
            {
                var item = _objEntity.procConsultarCabeceraAsistenicaXidCabeceraANDidEstudiante(_idCabecera,_idEstudiante).First();

                if (item != null)
                {
                    _lista = new cabeceraAsistencia(item.idCabeceraAsistencia, new catalogoEstudiante().obtenerEstudianteXID((int)item.idEstudiante).First(), new catalogoCabecera().obtenerCabeceraXID((int)item.idCabecera), Convert.ToInt32(item.idObservacion), item.observacion);
                    return _lista;
                }
                else
                {
                    return _lista;
                }
            }
            catch (Exception)
            {
                return _lista;
            }
        }

        public cabeceraAsistencia obtenerCabeceraAsistenciaXIDCabeceraAsistencia(int _idCabeceraAsistencia)
        {
            cabeceraAsistencia _lista = new cabeceraAsistencia();
            try
            {
                var item = _objEntity.procConsultarCabeceraAsistenciaXID(_idCabeceraAsistencia).First();

                if (item != null)
                {
                    _lista = new cabeceraAsistencia(item.idCabeceraAsistencia, new catalogoEstudiante().obtenerEstudianteXID((int)item.idEstudiante).First(), new catalogoCabecera().obtenerCabeceraXID((int)item.idCabecera), Convert.ToInt32(item.idObservacion), item.observacion);
                }
                return _lista;
            }
            catch (Exception)
            {
                return _lista;
            }


        }

        public cabeceraAsistencia obtenerCabeceraAsistenciaXIDCabeceraAsistenciaLimpia(int _idCabeceraAsistencia)
        {
            cabeceraAsistencia _lista = new cabeceraAsistencia();
            try
            {
                var item = _objEntity.procConsultarCabeceraAsistenciaXID(_idCabeceraAsistencia).First();

                if (item != null)
                {
                    _lista = new cabeceraAsistencia{ idCabeceraAsistencia = item.idCabeceraAsistencia, idEstudiante = (int)item.idEstudiante, idCabecera = (int)item.idCabecera, idObservacion= item.idObservacion, observacion = item.observacion};
                }
                return _lista;
            }
            catch (Exception)
            {
                return _lista;
            }


        }
        
        public List<cabeceraAsistencia> obtenerCabeceraAsistenciaXIDEstudiante(int _idEstudiante)
        {
            List<cabeceraAsistencia> _lista = new List<cabeceraAsistencia>();
            try
            {
                foreach (var item in _objEntity.procConsultarCabeceraAsistencia().Where(C => C.idEstudiante == _idEstudiante))
                {
                    _lista.Add(new cabeceraAsistencia(item.idCabeceraAsistencia, new catalogoEstudiante().obtenerEstudianteXID((int)item.idEstudiante).First(), new catalogoCabecera().obtenerCabeceraXID((int)item.idCabecera), Convert.ToInt32(item.idObservacion), item.observacion));
                }
                return _lista;
            }
            catch (Exception)
            {
                return _lista;
            }
        }
        public int insertarCabecetaAsistencia(cabeceraAsistencia _cabeceraAsistencia)
        {
            try
            {
                return Convert.ToInt32(_objEntity.procAgregarCabeceraAsistencia(_cabeceraAsistencia.idEstudiante, _cabeceraAsistencia.idCabecera, _cabeceraAsistencia.idObservacion).First().Value);
            }
            catch (Exception)
            {
                return 0;
            }

        }

        public List<cabeceraAsistencia> obtenerCabeceraAsistenciaXIDCabeceraXFecha(int _idCabecera,DateTime _fecha)
        {
            List<cabeceraAsistencia> _lista = new List<cabeceraAsistencia>();
            try
            {
                foreach (var item in _objEntity.procConsultarCabeceraAsistenciaXFechaXIdCabecera(_idCabecera,_fecha))
                {
                    _lista.Add(new cabeceraAsistencia(item.idCabeceraAsistencia, (int)item.idEstudiante, (int)item.idCabecera, (int)(item.idObservacion)));
                }
                return _lista;
            }
            catch (Exception)
            {
                return _lista;
            }
        }

    }
}
